AWS入門ブログリレー2024〜Amazon Simple Email Service(Amazon SES)編〜
こんにちは!AWS事業本部のおつまみです。
当エントリは弊社AWS事業本部による『AWS 入門ブログリレー 2024』の6日目のエントリです。
このブログリレーの企画は、普段 AWS サービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、 今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。
AWS をこれから学ぼう!という方にとっては文字通りの入門記事として、またすでに AWS を活用されている方にとっても AWS サービスの再発見や 2024 年のサービスアップデートのキャッチアップの場となればと考えておりますので、ぜひ最後までお付合い頂ければ幸いです。
では、さっそくいってみましょう。今回のテーマは『Amazon Simple Email Service(Amazon SES)』です。
そもそもメールサーバって?
Amazon SESについて解説前に、そもそもなぜメールサーバーが必要なのかみてみましょう。
メールサーバーとは、メールの配信・受信の役割を担う専用のサーバーのことを指し、メールを送受信するためにはメールサーバの利用が必要不可欠です。
メール=手紙に例えると、メールサーバー=ポストと認識してもらえればOKです。
メールを届ける仕組みは郵便で手紙を届ける仕組みに似ているということです。
そして、私たちは普段当たり前のように、ECサイトからの決済メールを受信したり、Googleメールから問い合わせのメールを配信したりしていると思います。
これらは全てメールサーバーがあるからこそ実現ができている仕組みです。
このように当たり前の様に使われているメールサーバーですが、1から自社で構築するのは大変な作業になります。
メールサーバには、主にこのような機能を実装しなければいけません。
機能 | 説明 |
---|---|
1. メールの受信 | クライアントからのメール配信リクエストを受け付け、メールを受信する機能 |
2. メールの保管 | 受信したメールを一時的に保管し、クライアントからのリクエストに応じて配信する機能 |
3. メールの配信 | クライアントから送信されたメールを宛先のメールサーバに配信する機能 |
4. メーリングリスト管理 | 複数の受信者にメールを一括送信するための機能 |
5. メール認証 | 送信者の本人確認や迷惑メール対策のための認証機能 |
これらの機能を1から構築するには、メールサーバのソフトウェア選定、ハードウェア準備、セキュリティ設定、運用保守など、多くの工数がかかります。
また、メールサーバを自社で構築するとなった場合、上記を設定するための専門知識が必要不可欠であり、サーバの運用管理も大変で、常に最新のセキュリティパッチの適用や、メールの送受信が適切にされているかといった監視などの手間がかかります。
そのため、多くの企業では既にある程度カスタマイズされたメールサービスを利用していることがほとんどです。
そのメールサービスに1つとしてAWSで提供されているサービスが Amazon SES です。
Amazon SESとは?
Amazon SES は、Amazon Simple Email Service の略で、Amazonが提供するフルマネージド型のメール配信サービスです。
フルマネージドということで、上記で挙げたメールサーバの構築や運用を自社で行う必要がなく、手軽にメールの送受信ができるクラウドサービスです。
メールを配信したいとなった場合、こちらの図のようにメールサーバを構築せず、代わりにAmazon SESに対してメールを送信するようリクエストします。
参考:Amazon SES における E メール送信の仕組み - Amazon Simple Email Service
そのため、「AWSからメールの配信・受信をできるようにしたい!」 となった場合に、まずはじめに候補として挙がるサービスです。
Amazon SNS との違いは?
AWSからメール配信できるサービスとして、Amazon SNS も挙げられますが、Amazon SESとの違いはなんでしょう?
Amazon SNS (Simple Notification Service)はメッセージングやプッシュ通知のためのフルマネージドなサービスです。
わかりやすいように、「ユーザーに注文確認のメールを送信する」場合をイメージしてみましょう。
各サービスを使うときにはこのような違いが出てきます。
Amazon SESを使う場合:
- 注文完了後、ユーザーの注文確認メールを送信します。
- メールの本文や件名、送信元アドレスなどを柔軟に設定できます。
- メールの配信状況を確認したり、スパムフィルタリングなどの機能も使えます。
Amazon SNSを使う場合:
- 注文完了時のイベントを「トピック」として設定します。
- ユーザーのメールアドレスを「サブスクリプション」として登録します。
- 注文完了イベントが発生すると、SNSがメールだけでなくSMSやプッシュ通知などでユーザーに通知します。
- 通知チャネルを柔軟に選択できるのが特徴です。
つまり、SNSではイベントとそれに対する通知チャネルを柔軟に設定できます。
一方、今回解説するAmazon SESはメール送信に特化したサービスです。メールの内容や配信状況の管理が中心となります。
つまり、SESはメール送信に特化しており、SNSはメールだけでなく、様々な通知チャネルを使えるサービスとなります。
Amazon SESの特徴とメリット
Amazon SESの主な特徴は以下のようにまとめられます。
- 簡単なメール配信
- 簡単なメール受信
- 高いスケーラビリティ
- 低コスト
- 豊富な監視・分析機能
簡単なメール配信
Amazon SESは、既存のアプリケーションやウェブサイトとの連携が容易で、豊富なライブラリやSDKを活用することで手軽に実装できるのが特徴です。
Amazon SESでは、これらの送信オプションを選択できます。
- Amazon SES API
- Amazon SES SMTP インターフェイス
- Amazon SES コンソール
どういう時にどの方法で送信すれば良いのかはこちらのブログをご参考ください。
簡単なメール受信
Amazon SESはメール配信として、利用されることが主ですが、メール受信としても利用できます。
一般的なメールクライアントで送受信するための用途ではなくて、受信メールの保存や、そこから別のAWSサービス(Lambda,SNS)を経由して自動処理を行う場合などがユースケースとなっています。
高いスケーラビリティ
Amazon SESは、大量のメール送信にも対応可能な高いスケーラビリティを備えています。
これは従来の自社運用のメールサーバでは実現が難しい点です。
自社で運用するメールサーバは、ハードウェアリソースに上限があるため、大量のメール送信にはすぐに容量不足を起こしてしまいます。
一方、Amazon SESはフルマネージドであるため、瞬間的な大量のメール送信にも迅速に対応でき、メール配信の拡張性に優れています。
必要に応じて自動的にスケーリングするため、突発的なトラフィックの増加にも柔軟に対応できます。
なお、サンドボックスと呼ばれる検証環境にある場合は、Eメールの最大数が決まっているので注意する必要があります。
参考:本番稼働用アクセスをリクエストする (Amazon SES サンドボックス外への移動) - Amazon Simple Email Service
低コスト
Amazon SESは、実際に送信したメールのみ課金される従量課金モデルを採用しています。
そのため、サーバーを運用するとなった場合にかかる月額費用や最小利用料金がなく、コストパフォーマンスに優れています。
メール送信であれば、1000件あたり 0.10 USDと非常に安価です。
また無料利用枠であれば、最初の 12 か月間は、毎月最大 3,000 件のメッセージ料金が無料になります。
豊富な分析機能
Amazon SESは、メール送信に関する詳細な分析機能を備えています。ダッシュボードでリアルタイムの状況を確認できるほか、エラー原因の特定や改善点の発見が容易となっています。
具体的には、このようにメール送信、拒否、バウンス、苦情率などの指標を詳細に把握できます。
参考画像:SESで30万通のテストメールを送信、発生したエラーや遅延を調査してみた | DevelopersIO
またバウンス、苦情率に特化した評判メトリクスもダッシュボードからすぐに詳細に把握できます。
参考画像:SESで30万通のテストメールを送信、発生したエラーや遅延を調査してみた | DevelopersIO
そのため、自分たちで1からダッシュボードを構築する必要がなく、詳細な分析機能が可能です。
Amazon SESのユースケース
このような特徴をもったAmazon SESは幅広いユースースで使用されています。
- トランザクションメール
- 注文確認メールや請求書の送付など、顧客に送るメール配信に活用できます。
- マーケティングメール
- ニュースレターや販促メールの配信に便利です。
- 通知メール
- システムの通知やアラートなどを、迅速にユーザに伝えることができます。
- API連携
- プログラムからメール送信APIを呼び出して、自動化された配信が可能です。
- ワークフロー支援
- 承認フローやチャットボットなど、ビジネスワークフローの一部としてメール配信を組み込めます。
あなたが普段受け取っているメールもAmazon SESから送信されたものかもしれませんね。
ちなみに2024年の神奈川県立高校入試出願システムの不具合の影響を受け、@gmail.comのメールアドレス を利用出来なかったトラブルがありましたが、こちらもAmazon SESが関連していました。
やってみよう
Amazon SESを使うことで、簡単にメールを配信・受信することができます。
こちらの手順で、1時間もかからずにAmazon SESを利用する環境を構築できるので、ぜひトライしてみましょう!
Amazon SESを活用する際の留意点
ここまでの解説で、「Amazon SES、AWSが全部面倒みてくれるから便利そう!」と思った方も多いのではないでしょうか?
そう思ったあなたは要注意です。
とても便利なメール配信サービスですが、運用上いくつか注意しないといけない点があります。
バウンス・苦情率には注意
Amazon SESでは、ユーザーのメールアドレスがブラックリストに登録されていたり、存在しない場合に、メールがバウンスする可能性があります。
また、ユーザーからメールに対する苦情が多数寄せられると、Amazon SESアカウントの制限が課される可能性があります。
そのため、適切なメールリスト管理や送信コンテンツの確認を行い、バウンス・苦情率を低く抑える必要があります。
Amazon SNSとCloudWatchを連携したアラート機能を活用すれば、特定のしきい値を超えた場合に通知を受け取れるため、即座に対応することも可能です。
デフォルトではログ取得できない
Amazon SESはデフォルトではログの取得ができません。
メール配信状況の確認やトラブルシューティングのためには、CloudWatchやS3などのログ収集サービスと連携する必要があります。
また実装が大変な場合は、Amazon SES機能の1つであるVirtual Deliverability Managerの使用も検討してみましょう。
有効化するだけで、ダッシュボード上で直近のログが確認できるようになります。
ドメイン認証設定を忘れない
Amazon SESでは、送信元ドメインの認証設定が必要です。
認証設定を行わないと、ユーザーのメールクライアントでスパムとして判定される可能性があります。
設定が必要なのは以下の認証設定です。
- SPF (Sender Policy Framework)
- SPFは送信者の正当性を検証する仕組み
- SPFレコードを使ってメールの送信元IPアドレスを定義し、認証することで、なりすましを防ぐことができます。
- AWSのIPアドレスをSPFレコードに追加する必要があります。
- DKIM (DomainKeys Identified Mail)
- DKIMは送信ドメインの正当性を電子的に証明する仕組み
- DKIMシグネチャを付与することで、メールの改ざんを検出できるようになります。
- Amazon SESでDKIMを設定し、DKIMレコードを DNS に登録する必要があります。
- DMARC (Domain-based Message Authentication, Reporting and Conformance)
- DMARCは、SPFとDKIMの認証結果に基づいて、メールの正当性を評価する仕組み
- DMARCポリシーを設定することで、認証に失敗したメールの処理方法を指定できます。
- Amazon SESでDMARCポリシーを設定し、DMARCレコードをDNSに登録する必要があります。
詳細については、こちらのブログをご参考ください。
設定がされていなかった場合、先ほどご紹介したVirtual Deliverability Managerのアドバイザーからも設定方法などを確認できます。
このようにAmazon SESは簡単に利用を始められますが、運用面ではいくつか気をつけるポイントがあります。
少し古い記事ですが、運用に関してよくまとまっているので参考にしてください。
まとめ
- Amazon SESは、Amazonが提供するフルマネージドのメール配信サービス
- 特徴としては、簡単なメール配信と受信、高いスケーラビリティと低コストのメリット、豊富な監視・分析機能が挙げられる。
- 運用面での留意点もあり、バウンスや苦情率への対策、ログ収集の設定、送信ドメインのSPF、DKIM、DMARCによる認証設定が重要である。
終わりに
以上、『AWS 入門ブログリレー 2024』の6日目のエントリ『Amazon Simple Email Service』編でした。 次回、3/31は弊社emiによる「Amazon DocumentDB編」の予定です!
最後までお読みいただきありがとうございました!
どなたかのお役に立てれば幸いです。
以上、おつまみ(@AWS11077)でした!
参考
Amazon SESとは? - Amazon Simple Email Service
Amazon SES のメール送信方法や API バージョンなどを整理してみた | DevelopersIO
本番稼働用アクセスをリクエストする (Amazon SES サンドボックス外への移動) - Amazon Simple Email Service
SESで30万通のテストメールを送信、発生したエラーや遅延を調査してみた | DevelopersIO
Gmailで問題が生じる神奈川県立高校ネット出願システムの被疑箇所を調査、改善策を検討してみた | DevelopersIO
【初心者向け】無料ドメインを使ってSESの検証環境をサクッと作ってみた | DevelopersIO
SESのバウンス率・苦情率を監視するためのCloudWatch Alarmを作成してみた | DevelopersIO
Amazon SESの送信ログをS3バケットに保存する設定をCloudFormationでサクッと作る | DevelopersIO